Successful software products persist, evolving into multiple versions, each of which may incorporate improvements over previous versions. Managing the development of software is an enormously complex undertaking, especially for evolving software. The practice of managing the evolution of software is referred to as source configuration management.
An important function of source configuration management is versioning. Versioning refers to the creating and tracking of versions of software components (e.g. source code files) in a particular software product. Versioning tools are software tools that provide or facilitate versioning. Versioning tools track versions of a software component, and provide information about differences between versions. Differences between versions of a data entity, such as software components, files, and text documents, or a portion thereof, are referred to herein as a delta.
Initial versioning tools stored a complete copy of each version of a software component. Information about the delta between particular versions was generated by comparing the complete copy of the versions.
Later versioning tools stored information describing only deltas between versions. Data representing the delta between particular versions is referred to herein as a delta representation. Storing delta representations requires less storage than storing complete copies of versions because, between consecutive versions of a software component, the complete delta comprises only a small percentage of the software component.
Most delta based versioning tools are developed by proprietary software vendors. A proprietary software vendor may use proprietary formats to format data generated by the vendor's versioning tools, including a proprietary format for representing deltas. Typically, a proprietary format is protected and/or not made public. This prevents other software vendors from developing tools that can process data generated by another vendor's versioning tool. Thus, versioning tools developed by one software vendor cannot be used to process data generated by another vendor's versioning tools. The user of a versioning tool thus is limited to one vendor.
Furthermore, a user (e.g. software development company) of a “legacy” versioning tool may wish to switch to another versioning tool. To do this, the proprietary formatted data (“legacy data”) of the legacy versioning tool must be converted to the format of the new versioning tool. The process of converting the format of data is inherently expensive, not only in terms of the resources expended to carry out the conversion, but also in terms of the interruption to the business operations of the user. Because the vendor of the legacy tool is the only one that may know about or is entitled to use the proprietary format of the legacy data, only that vendor can provide the capability to convert the legacy data. This gives a virtual monopoly to the vendor, with a bargaining power that is often exploited by the vendor.
Based on the foregoing, it is clearly desirable to provide an approach that uses non-proprietary formats for representing data generated by versioning tools, and in particular, for delta representations.